home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr11
/
pcv05n12.zip
/
QFORM.BAS
< prev
next >
Wrap
BASIC Source File
|
1993-06-10
|
7KB
|
119 lines
100 'QFORM Ver. 3.0 Copyright William Barden, Jr. 1992
110 DIM C$(1): CLS : KEY OFF: C$ = STRING$(5280, " ")
120 X = 0: Y = 0: LINTYP = 0: PENT = 0: CLR = 0: MODE = 0: FT = 1: DS = 0
130 GOSUB 550
140 IF ZA <> 0 THEN ON ZA GOTO 160, 210, 260, 310, 360, 370, 380, 390, 430, 440, 480
150 IF ZA = 12 THEN SYSTEM ELSE GOTO 130
160 IF PENT = 0 THEN GOSUB 1100: GOTO 150
170 CC$ = CHR$(179 + 7 * LINTYP): PD = ZD: ZD = 1: IF FT = 1 THEN FT = 0: GOSUB 650: GOTO 150
180 GOSUB 650: GOSUB 1100: CLR = 0: IF Y = 0 AND DS = 0 THEN GOTO 150
190 IF MID$(C$, ((Y + DS) * 80 + X) + 1, 1) = " " THEN MID$(C$, ((Y + DS) * 80 + X) + 1, 1) = CHR$(179 + 7 * LINTYP)
200 GOTO 150
210 IF PENT = 0 THEN GOSUB 1150: GOTO 150
220 CC$ = CHR$(179 + 7 * LINTYP): PD = ZD: ZD = 2: IF FT = 1 THEN FT = 0: GOSUB 650: GOTO 150
230 GOSUB 650: GOSUB 1150: CLR = 0: IF Y = 23 AND DS = 42 THEN GOTO 150
240 IF MID$(C$, ((Y + DS) * 80 + X) + 1, 1) = " " THEN MID$(C$, ((Y + DS) * 80 + X) + 1, 1) = CHR$(179 + 7 * LINTYP)
250 GOTO 150
260 IF PENT = 0 THEN X = X - 1: IF X = -1 THEN X = 0: GOTO 150 ELSE GOTO 150
270 CC$ = CHR$(196 + 9 * LINTYP): PD = ZD: ZD = 3: IF FT = 1 THEN FT = 0: GOSUB 650: GOTO 150
280 GOSUB 650: X = X - 1: CLR = 0: IF X = -1 THEN X = 0: GOTO 150
290 IF MID$(C$, ((Y + DS) * 80 + X) + 1, 1) = " " THEN MID$(C$, ((Y + DS) * 80 + X) + 1, 1) = CHR$(196 + 9 * LINTYP)
300 GOTO 150
310 IF PENT = 0 THEN X = X + 1: IF X = 80 THEN X = 79: GOTO 150 ELSE GOTO 150
320 CC$ = CHR$(196 + 9 * LINTYP): PD = ZD: ZD = 4: IF FT = 1 THEN FT = 0: GOSUB 650: GOTO 150
330 GOSUB 650: X = X + 1: CLR = 0: IF X = 80 THEN X = 79: GOTO 150
340 IF MID$(C$, ((Y + DS) * 80 + X) + 1, 1) = " " THEN MID$(C$, ((Y + DS) * 80 + X) + 1, 1) = CHR$(196 + 9 * LINTYP)
350 GOTO 150
360 LINTYP = 0: PENT = 1: GOTO 150
370 LINTYP = 1: PENT = 1: GOTO 150
380 PENT = 0: GOTO 150
390 LOCATE 25, 1: PRINT "Text entry mode. Press % to end"; : ZXS = X
400 GOSUB 530: ZA$ = INKEY$: IF ZA$ = "" THEN GOTO 400 ELSE IF ZA$ = "%" THEN GOSUB 1070: GOTO 150
404 IF ZA$ <> CHR$(8) OR X = 0 GOTO 409
405 MID$(C$, ((Y + DS) * 80 + X), 1) = " ": LOCATE Y + 1, X: PRINT " ";
408 X = X - 1: GOTO 400
409 IF ZA$ = CHR$(13) THEN GOSUB 1150: X = ZXS: GOTO 400
410 IF LEN(ZA$) > 1 OR ZA$ < " " THEN GOTO 400
411 MID$(C$, ((Y + DS) * 80 + X) + 1, 1) = ZA$: LOCATE Y + 1, X + 1: PRINT ZA$; : X = X + 1
420 IF X = 80 THEN X = 79: GOTO 400 ELSE GOTO 400
430 MID$(C$, ((Y + DS) * 80 + X) + 1, 1) = " ": CLR = 1: GOSUB 670: GOTO 150
440 LOCATE 25, 1: PRINT "Save file as (Press Enter to cancel): "; : ZZ$ = "": INPUT ; "", ZZ$
450 IF ZZ$ = "" THEN GOSUB 1070: GOTO 150 ELSE OPEN "O", #1, ZZ$
460 FOR I = 0 TO 65: ZA$ = "": FOR J = 0 TO 79: ZA$ = ZA$ + MID$(C$, (I * 80 + J) + 1, 1): NEXT
470 PRINT #1, ZA$: NEXT: CLOSE : GOSUB 1070: GOTO 150
480 LOCATE 25, 1: PRINT "To read in a file, enter its name (press Enter to cancel): ";
490 INPUT ; "", ZZ$: IF ZZ$ = "" THEN GOSUB 1070: GOTO 150 ELSE OPEN "I", #1, ZZ$
500 CLS : KEY OFF: DS = 0: FOR I = 0 TO 65: IF EOF(1) THEN GOTO 511
501 LINE INPUT #1, ZA$: FOR J = 1 TO LEN(ZA$)
510 MID$(C$, (I * 80 + (J - 1)) + 1, 1) = MID$(ZA$, J, 1): NEXT: NEXT
511 CLOSE : FOR I = 0 TO 1919
520 LOCATE INT(I / 80) + 1, (I MOD 80) + 1: PRINT MID$(C$, I + 1, 1); : NEXT: GOTO 150
530 LOCATE Y + 1, X + 1: ZC$ = MID$(C$, ((Y + DS) * 80 + X) + 1, 1): PRINT CHR$(219);
540 LOCATE Y + 1, X + 1: PRINT ZC$; : RETURN
550 ZA$ = INKEY$: IF ZA$ = "" THEN GOSUB 530: GOTO 550 ELSE ZA = 0
560 IF MODE = 1 THEN GOTO 640
570 IF ZA$ = CHR$(0) + CHR$(72) THEN ZA = 1 ELSE IF ZA$ = CHR$(0) + CHR$(80) THEN ZA = 2
580 IF ZA$ = CHR$(0) + CHR$(75) THEN ZA = 3 ELSE IF ZA$ = CHR$(0) + CHR$(77) THEN ZA = 4
590 IF ZA <> 0 THEN GOTO 640
600 IF ZA$ = "s" OR ZA$ = "S" THEN ZA = 5 ELSE IF ZA$ = "d" OR ZA$ = "D" THEN ZA = 6
610 IF ZA$ = "p" OR ZA$ = "P" THEN ZA = 7 ELSE IF ZA$ = "t" OR ZA$ = "T" THEN ZA = 8
620 IF ZA$ = "c" OR ZA$ = "C" THEN ZA = 9 ELSE IF ZA$ = "w" OR ZA$ = "W" THEN ZA = 10
630 IF ZA$ = "n" OR ZA$ = "N" THEN ZA = 11 ELSE IF ZA$ = "x" OR ZA$ = "X" THEN ZA = 12
640 RETURN
650 ZB$ = MID$(C$, ((Y + DS) * 80 + X) + 1, 1)
660 IF ZB$ <> " " AND PENT = 1 AND CLR = 0 THEN GOTO 690
670 IF CLR <> 1 THEN MID$(C$, ((Y + DS) * 80 + X) + 1, 1) = CC$: LOCATE Y + 1, X + 1: PRINT CC$;
680 RETURN
690 CC$ = ZB$: BR = (ZD - 1) * 2 + LINTYP + 1
700 ON BR GOTO 710, 730, 750, 770, 790, 810, 830, 850
710 RESTORE 720: GOTO 870 'Up, single
720 DATA 184,181,191,180,194,197,196,197,205,207,209,216,213,198,218,195
730 RESTORE 740: GOTO 870 'Up, double
740 DATA 183,182,187,185,196,208,201,204,203,206,205,206,210,215,214,199
750 RESTORE 760: GOTO 870 'Down, single
760 DATA 190,181,192,195,193,197,196,197,205,209,207,216,212,198,217,180
770 RESTORE 780: GOTO 870 'Down, double
780 DATA 188,185,189,182,196,210,200,204,202,206,205,206,208,215,211,199
790 RESTORE 800: GOTO 870 'Left, single
800 DATA 179,197,186,182,192,193,195,197,199,215,211,208,214,210,218,194
810 RESTORE 820: GOTO 870 'Left, double
820 DATA 179,181,186,206,198,216,200,202,201,203,204,206,212,207,213,209
830 RESTORE 840: GOTO 870 'Right, single
840 DATA 179,197,180,197,182,215,183,210,186,199,189,208,191,194,217,193
850 RESTORE 860: GOTO 870 'Right, double
860 DATA 179,198,181,216,184,209,185,206,186,206,187,203,188,202,190,207
870 FOR ZI = 1 TO 8: READ ZF, ZT: ZF$ = CHR$(ZF): ZT$ = CHR$(ZT)
880 IF ZF$ <> CC$ THEN GOTO 1060
890 IF ZD = 4 AND CC$ = CHR$(179) AND PD = 1 THEN ZT$ = CHR$(218)
900 IF ZD = 4 AND CC$ = CHR$(179) AND PD = 2 THEN ZT$ = CHR$(192)
910 IF ZD = 3 AND CC$ = CHR$(179) AND PD = 1 THEN ZT$ = CHR$(191)
920 IF ZD = 3 AND CC$ = CHR$(179) AND PD = 2 THEN ZT$ = CHR$(217)
930 IF ZD = 1 AND CC$ = CHR$(196) AND PD = 3 THEN ZT$ = CHR$(192)
940 IF ZD = 1 AND CC$ = CHR$(196) AND PD = 4 THEN ZT$ = CHR$(217)
950 IF ZD = 2 AND CC$ = CHR$(196) AND PD = 3 THEN ZT$ = CHR$(218)
960 IF ZD = 2 AND CC$ = CHR$(196) AND PD = 4 THEN ZT$ = CHR$(191)
970 IF ZD = 4 AND CC$ = CHR$(186) AND PD = 1 THEN ZT$ = CHR$(201)
980 IF ZD = 4 AND CC$ = CHR$(186) AND PD = 2 THEN ZT$ = CHR$(200)
990 IF ZD = 3 AND CC$ = CHR$(186) AND PD = 1 THEN ZT$ = CHR$(187)
1000 IF ZD = 3 AND CC$ = CHR$(186) AND PD = 2 THEN ZT$ = CHR$(188)
1010 IF ZD = 1 AND CC$ = CHR$(205) AND PD = 3 THEN ZT$ = CHR$(200)
1020 IF ZD = 1 AND CC$ = CHR$(205) AND PD = 4 THEN ZT$ = CHR$(188)
1030 IF ZD = 2 AND CC$ = CHR$(205) AND PD = 3 THEN ZT$ = CHR$(201)
1040 IF ZD = 2 AND CC$ = CHR$(205) AND PD = 4 THEN ZT$ = CHR$(187)
1050 CC$ = ZT$: GOTO 670
1060 NEXT ZI: GOTO 670
1070 LOCATE 25, 1
1080 PRINT " ";
1090 RETURN
1100 Y = Y - 1: IF (Y > -1) THEN RETURN ELSE IF (Y = -1 AND DS = 0) THEN Y = 0: RETURN
1110 IF DS = 42 THEN DS = 21 ELSE DS = 0
1120 CLS : KEY OFF: FOR I = 0 TO 1919: ZK$ = MID$(C$, (I + (DS * 80)) + 1, 1)
1130 IF ZK$ <> " " THEN LOCATE INT(I / 80) + 1, (I MOD 80) + 1: PRINT ZK$;
1140 NEXT: Y = 21: RETURN
1150 Y = Y + 1: IF (Y < 24) THEN RETURN ELSE IF (Y = 24 AND DS = 42) THEN Y = 23: RETURN
1160 IF DS = 0 THEN DS = 21 ELSE DS = 42
1170 CLS : KEY OFF: FOR I = 0 TO 1919: ZK$ = MID$(C$, (I + (DS * 80)) + 1, 1)
1180 IF ZK$ <> " " THEN LOCATE INT(I / 80) + 1, (I MOD 80) + 1: PRINT ZK$;
1190 NEXT: Y = 2: RETURN